const app = getApp()

Component({
  options: {
    multipleSlots: true // 在组件定义时的选项中启用多slot支持
  },
  /**
   * 组件的属性列表
   */
  properties: {
    title: { // 属性名
      type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）
      value: '标题' // 属性初始值（可选），如果未指定则会根据类型选择一个
    },
    // 弹窗内容
    content: {
      type: String,
      value: '内容'
    },
    // 弹窗取消按钮文字
    btn_no: {
      type: String,
      value: '取消'
    },
    // 弹窗确认按钮文字
    btn_ok: {
      type: String,
      value: '确定'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    flag: true,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },

  /**
   * 组件的方法列表
   */
  methods: {
    //隐藏弹框
    hidePopup: function () {
      this.setData({
        flag: !this.data.flag
      })
    },
    //展示弹框
    showPopup() {
      this.setData({
        flag: !this.data.flag
      })
    },
    /*
     * 内部私有方法建议以下划线开头
     * triggerEvent 用于触发事件
     */
    _error() {
      //触发取消回调
      this.triggerEvent("error")
    },
    _success() {
      //触发成功回调
      this.triggerEvent("success");
    },
    //授权弹窗操作		情况3：用户未授权，需点击button授权
    bindGetUserInfo: function (e) {
      if (e.detail.userInfo) { //用户按了允许授权按钮
        this.hidePopup();
        console.info("@@@@@@@@@@@@@@@@@@@@@@@@@@2");
        //登录操作
        wx.getSetting({
          success: res => {
            if (res.authSetting['scope.userInfo']) {
              // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
              wx.login({
                success: function (res) {
                  var code = res.code; //登录凭证
                  if (code) {
                    //2、调用获取用户信息接口
                    wx.getUserInfo({
                      success: function (res) {
                        console.log({
                          encryptedData: res.encryptedData,
                          iv: res.iv,
                          code: code
                        })
                        //3.请求自己的服务器，解密用户信息 获取unionId等加密信息
                        wx.request({
                          url: 'https://www.goup-open.cn/mini/user/decodeUserInfo', //自己的服务接口地址
                          method: 'post',
                          header: {
                            'content-type': 'application/x-www-form-urlencoded'
                          },
                          data: {
                            encryptedData: res.encryptedData,
                            iv: res.iv,
                            code: code
                          },
                          success: function (data) {
                            //4.解密成功后 获取自己服务器返回的结果
                            if (data.data.status == 1) {
                              var userInfo_ = data.data.userInfo;
                              //设置全局变量
                              app.globalData.openId = userInfo_.openId;
                              console.info("@@@@@@@@@@@@@@@@@@@@@@@openId:" + app.globalData.openId);
                              //记录登录日志
                              wx.request({
                                url: 'https://www.goup-open.cn/mini/user/login', //自己的服务接口地址
                                method: 'post',
                                header: {
                                  'content-type': 'application/json;charset=utf-8'
                                },
                                data: {
                                  openId: data.data.userInfo.openId,
                                  nickName: data.data.userInfo.nickName
                                },
                                success: function (data) {
                                  console.log('登录记录成功')
                                },
                                fail: function () {
                                  console.log('系统错误')
                                }
                              })
                              console.log(userInfo_)
                            } else {
                              console.log('解密失败')
                              that.setData({
                                type: 2
                              });
                            }

                          },
                          fail: function () {
                            console.log('系统错误')
                          }
                        })
                      },
                      fail: function () {
                        console.log('获取用户信息失败')
                      }
                    })

                  } else {
                    console.log('获取用户登录态失败！' + r.errMsg)
                  }
                },
                fail: function () {
                  console.log('登陆失败')
                }
              })
            } else {
              console.log('获取用户信息失败')
            }
          }
        })
        console.info(e.detail.userInfo);
      } else { //用户按了拒绝按钮
        wx.showModal({
          title: '警告',
          content: '您点击了拒绝授权，将无法进入小程序，请授权之后再进入~',
          showCancel: false,
          confirmText: '我知道了',
          success: function (res) {
            if (res.confirm) {
              console.log('用户点击了“我知道了”')
              //返回前一页面
              wx.navigateBack({
                delta: 1
              })
            }
          }
        })
      }
    }
  }
})